
#include <stdio.h>

struct Point {
  char arr[25] __attribute__((aligned(
      __BIGGEST_ALIGNMENT__)));  // 以当前机器支持的最大字节对齐数__BIGGEST_ALIGNMENT__来对齐char数组
  double x;
};

struct Point2 {
  char arr[17] __attribute__((aligned(8)));  // 以8字节对齐来对齐char数组
  double x;
};

struct Point3 {
  char arr[25];
  double x;
} __attribute__((aligned(
    __BIGGEST_ALIGNMENT__)));  // 以当前机器支持的最大字节对齐数__BIGGEST_ALIGNMENT__来对齐结构体

int main() {
  struct Point p;  // 以16字节对齐的结构体变量

  printf("Size of Point: %zu\n", sizeof(struct Point));
  printf("Size of Point2: %zu\n", sizeof(struct Point2));
  printf("Size of Point3: %zu\n", sizeof(struct Point3));
  return 0;
}